/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package restaurante.entidades;

import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author USUARIO
 */
@Entity
@Table(name = "comprobante")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Comprobante.findAll", query = "SELECT c FROM Comprobante c"),
    @NamedQuery(name = "Comprobante.findByIdcomprobante", query = "SELECT c FROM Comprobante c WHERE c.idcomprobante = :idcomprobante"),
    @NamedQuery(name = "Comprobante.findBySubtotal", query = "SELECT c FROM Comprobante c WHERE c.subtotal = :subtotal"),
    @NamedQuery(name = "Comprobante.findByTotal", query = "SELECT c FROM Comprobante c WHERE c.total = :total"),
    @NamedQuery(name = "Comprobante.findByTotalDscto", query = "SELECT c FROM Comprobante c WHERE c.totalDscto = :totalDscto"),
    @NamedQuery(name = "Comprobante.findByIgv", query = "SELECT c FROM Comprobante c WHERE c.igv = :igv"),
    @NamedQuery(name = "Comprobante.findByEstado", query = "SELECT c FROM Comprobante c WHERE c.estado = :estado")})
public class Comprobante implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NotNull
    @Column(name = "idcomprobante")
    private Integer idcomprobante;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "subtotal")
    private BigDecimal subtotal;
    @Column(name = "total")
    private BigDecimal total;
    @Column(name = "total_dscto")
    private BigDecimal totalDscto;
    @Column(name = "igv")
    private BigDecimal igv;
    @Column(name = "estado")
    private Short estado;
    @JoinColumn(name = "descuento_id_dscto", referencedColumnName = "id_dscto")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Descuento descuentoIdDscto;
    @JoinColumn(name = "tipoComprobante_idtipoComprobante", referencedColumnName = "idtipoComprobante")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private TipoComprobante tipoComprobanteidtipoComprobante;
    @JoinColumn(name = "empleado_id_empleado", referencedColumnName = "id_empleado")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Empleado empleadoIdEmpleado;
    @JoinColumn(name = "pedido_idpedido", referencedColumnName = "idpedido")
    @ManyToOne(optional = false, fetch = FetchType.EAGER)
    private Pedido pedidoIdpedido;

    public Comprobante() {
    }

    public Comprobante(Integer idcomprobante) {
        this.idcomprobante = idcomprobante;
    }

    public Integer getIdcomprobante() {
        return idcomprobante;
    }

    public void setIdcomprobante(Integer idcomprobante) {
        this.idcomprobante = idcomprobante;
    }

    public BigDecimal getSubtotal() {
        return subtotal;
    }

    public void setSubtotal(BigDecimal subtotal) {
        this.subtotal = subtotal;
    }

    public BigDecimal getTotal() {
        return total;
    }

    public void setTotal(BigDecimal total) {
        this.total = total;
    }

    public BigDecimal getTotalDscto() {
        return totalDscto;
    }

    public void setTotalDscto(BigDecimal totalDscto) {
        this.totalDscto = totalDscto;
    }

    public BigDecimal getIgv() {
        return igv;
    }

    public void setIgv(BigDecimal igv) {
        this.igv = igv;
    }

    public Short getEstado() {
        return estado;
    }

    public void setEstado(Short estado) {
        this.estado = estado;
    }

    public Descuento getDescuentoIdDscto() {
        return descuentoIdDscto;
    }

    public void setDescuentoIdDscto(Descuento descuentoIdDscto) {
        this.descuentoIdDscto = descuentoIdDscto;
    }

    public TipoComprobante getTipoComprobanteidtipoComprobante() {
        return tipoComprobanteidtipoComprobante;
    }

    public void setTipoComprobanteidtipoComprobante(TipoComprobante tipoComprobanteidtipoComprobante) {
        this.tipoComprobanteidtipoComprobante = tipoComprobanteidtipoComprobante;
    }

    public Empleado getEmpleadoIdEmpleado() {
        return empleadoIdEmpleado;
    }

    public void setEmpleadoIdEmpleado(Empleado empleadoIdEmpleado) {
        this.empleadoIdEmpleado = empleadoIdEmpleado;
    }

    public Pedido getPedidoIdpedido() {
        return pedidoIdpedido;
    }

    public void setPedidoIdpedido(Pedido pedidoIdpedido) {
        this.pedidoIdpedido = pedidoIdpedido;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idcomprobante != null ? idcomprobante.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Comprobante)) {
            return false;
        }
        Comprobante other = (Comprobante) object;
        if ((this.idcomprobante == null && other.idcomprobante != null) || (this.idcomprobante != null && !this.idcomprobante.equals(other.idcomprobante))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "restaurante.entidades.Comprobante[ idcomprobante=" + idcomprobante + " ]";
    }
    
}
